package com.linzelin.www.util;

import com.linzelin.www.po.Activity;
import com.linzelin.www.po.Charger;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Scanner;

public class AccountManager {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    //先获取一波连接池
    //管理员账号判断方法,用于判断管理员账号能否登录
    public boolean logon(String username,String password)
    {
        /*管理员账号就不搞什么复杂的了,直接使用这种方法登录,
        出现密码或是用户名错误直接退出系统*/
        if(username.equals("林泽霖"))
        {
            if(password.equals("123456"))
            {
                return true;
            }
            return false;
        }
        return false;
    }
    //管理员界面
    public void Function(String username,String password)
    {
        while(logon(username,password))
        {
            System.out.println("------------------");
            System.out.println("登录成功");
            System.out.println("------------------");
            System.out.println("输入EA审核活动\n输入EC审核负责人\n------------------\n输入任意字符退出");
            String select = new Scanner(System.in).next();
            if (select.equals("EA"))
            {
                ExmaineActivity();
                //进入活动审核方法中
            }
            else if(select.equals("EC")){
                ExamineCharger();
                //进入负责人方法审核中
            }
            else
            {
                return;
                //直接退出程序
            }
        }
        //在登录方法中判断失败就跳转到这里直接显示登录失败
        System.out.println("------------------");
        System.out.println("登录失败");
        System.out.println("正在退出系统");
    }

    public void ExmaineActivity()
    {
        System.out.println("------------------");
        System.out.println("当前待审核的活动有:");
        String sql = "select * from activity";
        //获取表中符合条件的活动,有就返回true,没有就返回false
        int flag = 0;
        //flag用来判读是否有活动需要审核的标志
        List<Activity> list = template.query(sql,new BeanPropertyRowMapper<Activity>(Activity.class));
        for (Activity activity : list) {
            //遍历集合,找出在审核中的
            if(activity.getStatus().equals("待审核"))
            {
                //将在审核中的所有活动打印出来
                System.out.println("------------------");
                System.out.println(activity.getActivity()+"--状态:"+activity.getStatus());
                flag = 1;
                //flag变量踊跃确定有无要审核的活动
            }

        }
        if(flag == 1)
        {
            System.out.println("------------------");
            System.out.println("请输入要审核的活动名称");
            new AccountActivity().ActivityExamine(new Scanner(System.in).next());
            //调用活动方法中的审核程序来审核
        }
        else
        {
            //在没有扫描到活动的情况下就返回这个
            System.out.println("------------------");
            System.out.println("当前无待审核的活动,自动为您退出系统");
            System.out.println("------------------");
        }
    }

    public void ExamineCharger()
    {
        //类似活动审核程序,筛选出要审核的账号
        System.out.println("当前待审核的账号有:");
        String sql = "select * from charger";
        //获取表中符合条件的活动,有就返回true,没有就返回false
        int flag = 0;
        List<Charger> list = template.query(sql,new BeanPropertyRowMapper<Charger>(Charger.class));
        for (Charger c : list) {
            if(c.getStatus().equals("待审核"))
            {
                System.out.println("------------------");
                System.out.println(c.getUsename()+"--状态:"+c.getStatus());
                System.out.println("联系方式:"+c.getContact());
                AccountAssociation.FindAssociation(c.getAssociation_id());
                flag = 1;
            }
        }
        if(flag == 1)
        {
            System.out.println("------------------");
            System.out.println("请输入要审核的账号名称");
            new AccountCharger().ChargerEnroll(new Scanner(System.in).next());
            //调用负责人函数来审核负责人
        }
        else
        {
            System.out.println("------------------");
            System.out.println("当前无待审核的账号,自动为您退出系统");
            System.out.println("------------------");
        }
    }
}
